package com.finanzaspersonales;

import java.sql.Date;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import clases.Objetivos;
import clases.Rubro;
import clases.SubRubro;
import clases.categoria_gastos;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterView.OnItemClickListener;

public class CrearObjetivo extends Activity implements OnItemSelectedListener {
	private CrearObjetivo me=this;
	private String idUsuario;
	private Button btn_crear;
	private DatePicker dtpFecLimite;
	private String nombre;
	private String montoActual;
	private String montoOF;
	private int posicion;
	private int posicion2;
	private int idRubro;
	private int idRxsr;
	private Date fecLimite;
	private ArrayList<Rubro> rubros = new ArrayList<Rubro>();
	private ArrayList<SubRubro> subRubros = new ArrayList<SubRubro>();
	ArrayList<String> nomRubros = new ArrayList<String>();
	ArrayList<String> nomSubRubros = new ArrayList<String>();

	/**
	 * @see android.app.Activity#onCreate(Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		idUsuario= this.getIntent().getExtras().getString("idUsuario");
		super.onCreate(savedInstanceState);
		setContentView(R.layout.crear_objetivo);
		
		Spinner spn_rubro = (Spinner)findViewById(R.id.spnOFRubro);
		Spinner spn_subRubro = (Spinner)findViewById(R.id.spnOFSubRubro);
		spn_rubro.setOnItemSelectedListener(this);
		rubros = llenaRubros();
		for(int i=0; i<rubros.size();i++){
			nomRubros.add(rubros.get(i).getNombre());
		}
//		llenar el spinner con ese arreglo
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, nomRubros);		
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	    spn_rubro.setAdapter(adapter);
	    
  	    dtpFecLimite = (DatePicker) findViewById(R.id.dtpFecLimite);
  	    
		btn_crear = (Button) findViewById(R.id.btnCrearOF);
		btn_crear.setOnClickListener(new View.OnClickListener() {
			            public void onClick(View v){ 
			            	crearOF();
			            }		            
			        });
	}
	
	private ArrayList<Rubro> llenaRubros() {
		ArrayList<Rubro> rub = new ArrayList<Rubro>();
		JSONArray  jArray = null;
		try {
			jArray = (new JSONParser_Final().execute("http://10.0.2.2:3000/rubro_ofs/verRubros/alfie.json")).get();
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
		
		try {
			for(int i = 0; i < jArray.length(); i++){
				 JSONObject jsonItem = jArray.getJSONObject(i);
		         JSONObject jsonItem1 = jsonItem.getJSONObject("rubro_of");
		         
		         int id = jsonItem1.getInt("id");
		         String nombre = jsonItem1.getString("nombre");
		         
		         Rubro rb = new Rubro(id, nombre);
		         rub.add(rb);
		        
			}
		}catch (JSONException e) {
		     e.printStackTrace();
		 }
		return rub;
	}
	
	public void cargarCboZonas(){
    	//carga spinner con rubros
		Spinner spn_rubro = (Spinner)findViewById(R.id.spnOFRubro); 	
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(me,android.R.layout.simple_spinner_item, nomRubros);		
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	    spn_rubro.setAdapter(adapter);
    }

	
	
	public void onItemSelected(AdapterView<?> arg0, View view,int position,long id) {
		
		if (arg0.getId()==R.id.spnOFRubro){
			Spinner auxSpinner=(Spinner)arg0;			
			String nombreRubro= nomRubros.get(position);
        	posicion = buscaRubro(nombreRubro);
        	idRubro= rubros.get(posicion).getId();
			
			//llenar rubros en un arreglo
        	subRubros=llenaSubRubros();
        	final ArrayList<String> nomSubRubros = new ArrayList<String>();
        	for(int i=0; i<subRubros.size();i++){
  			nomSubRubros.add(subRubros.get(i).getNombre());
        	}
        	String nombreSubRubro = nomSubRubros.get(position);
        	posicion2 = buscaSubRubro(nombreSubRubro);
        	idRxsr = subRubros.get(position).getId();
        			
  		//llenar el spinner con ese arreglo
        	Spinner auxSpinner2 = (Spinner)this.findViewById(R.id.spnOFSubRubro);
        	ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, nomSubRubros);		
        	adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        	auxSpinner2.setAdapter(adapter2);
        	
		}
	}
	
	public void onNothingSelected(AdapterView<?> spn_rubro) {
		// TODO Auto-generated method stub
		
	}
	
	
	protected void crearOF() {
		EditText etnombre = (EditText)findViewById(R.id.etNombreOF);
        nombre = etnombre.getText().toString();;
        montoActual = "0";
        EditText etmontoOF = (EditText)findViewById(R.id.etMonto);
        montoOF = etmontoOF.getText().toString();
        //fecha limite
        fecLimite = new Date(dtpFecLimite.getYear()-1900,dtpFecLimite.getMonth(), dtpFecLimite.getDayOfMonth());
		
        new json_Actualizar().execute("http://10.0.2.2:3000/objetivo_financieros/crearOF/"+idUsuario+"/"+idRxsr+"/"+nombre+"/"+montoActual+"/"+montoOF+"/"+fecLimite+".json");
		
	}
	
	protected int buscaRubro(String nombreRubro) {
		int pos = 0;
		for (int i=0; i<rubros.size(); i++){
			if (rubros.get(i).getNombre().equals(nombreRubro)){
				pos=i;
				break;
			}
		}
		return pos;
	}

	protected int buscaSubRubro(String nombreSubRubro) {
		int pos = 0;
		for (int i=0; i<subRubros.size(); i++){
			if (subRubros.get(i).getNombre().equals(nombreSubRubro)){
				pos=i;
				break;
			}
		}
		return pos;
	}

	private ArrayList<SubRubro> llenaSubRubros() {
		ArrayList<SubRubro> subrub = new ArrayList<SubRubro>();
		JSONArray  jArray = null;
		try {
			jArray = (new JSONParser_Final().execute("http://10.0.2.2:3000/sub_rubro_ofs/verSubRubros/"+idRubro+".json")).get();
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
		
		try {
			for(int i = 0; i < jArray.length(); i++){
				 JSONObject jsonItem = jArray.getJSONObject(i);
		         JSONObject jsonItem1 = jsonItem.getJSONObject("sub_rubro_of");
		         
		         int id = jsonItem1.getInt("subrubroid");
		         String nombre = jsonItem1.getString("nombre");
		         int rxsrid = jsonItem1.getInt("id");
		         
		         SubRubro sbrb = new SubRubro(id, nombre,rxsrid);
		         subrub.add(sbrb);
		        
			}
		}catch (JSONException e) {
		     e.printStackTrace();
		 }
		return subrub;
	}

	
}
